package net.suncaper.mvc.service;

import net.suncaper.mvc.model.domain.Message;

import java.util.List;

/**
 * 消息服务接口
 */
public interface IMessageService {
    /**
     * 添加消息
     * @param message 消息信息
     * @return 添加结果
     */
    boolean addMessage(Message message);
    
    /**
     * 根据消息ID获取消息
     * @param id 消息ID
     * @return 消息信息
     */
    Message getMessageById(Long id);
    
    /**
     * 根据用户ID获取消息列表
     * @param userId 用户ID
     * @return 消息列表
     */
    List<Message> getMessagesByUserId(String userId);
    
    /**
     * 根据用户ID和消息类型获取消息列表
     * @param userId 用户ID
     * @param type 消息类型
     * @return 消息列表
     */
    List<Message> getMessagesByUserIdAndType(String userId, String type);
    
    /**
     * 根据用户ID获取未读消息列表
     * @param userId 用户ID
     * @return 未读消息列表
     */
    List<Message> getUnreadMessagesByUserId(String userId);
    
    /**
     * 获取用户未读消息数量
     * @param userId 用户ID
     * @return 未读消息数量
     */
    int getUnreadMessageCount(String userId);
    
    /**
     * 标记消息为已读
     * @param id 消息ID
     * @return 更新结果
     */
    boolean markMessageAsRead(Long id);
    
    /**
     * 标记用户的所有消息为已读
     * @param userId 用户ID
     * @return 更新结果
     */
    boolean markAllMessagesAsRead(String userId);
    
    /**
     * 删除消息
     * @param id 消息ID
     * @return 删除结果
     */
    boolean deleteMessageById(Long id);
    
    /**
     * 删除用户的所有消息
     * @param userId 用户ID
     * @return 删除结果
     */
    boolean deleteMessagesByUserId(String userId);
} 